home *** CD-ROM | disk | FTP | other *** search
- #include "vogl.h"
-
- /*
- * Handles all the v4f v3f v2f calls
- */
-
-
- /*
- * vcall
- *
- * Specify a generic point.
- */
- void
- vcall(vector, len)
- double vector[];
- int len;
- {
- Vector vec;
-
- vec[0] = vector[0];
- vec[1] = vector[1];
- vec[2] = 0.0;
- vec[3] = 1.0;
-
- if (len == 3) {
- vec[2] = vector[2];
- vec[3] = 1.0;
- } else if (len == 4) {
- vec[2] = vector[2];
- vec[3] = vector[3];
- }
-
- if (vdevice.save) {
- vdevice.savex = vec[V_X];
- vdevice.savey = vec[V_Y];
- vdevice.savez = vec[V_Z];
- }
-
- switch (vdevice.bgnmode) {
- case VLINE:
- if (vdevice.save) {
- vdevice.save = 0;
- move(vec[V_X], vec[V_Y], vec[V_Z]);
- break;
- }
-
- draw(vec[V_X], vec[V_Y], vec[V_Z]);
- break;
- case VPNT:
- pnt(vec[V_X], vec[V_Y], vec[V_Z]);
- break;
- case VCLINE:
- if (vdevice.save) {
- vdevice.save = 0;
- move(vec[V_X], vec[V_Y], vec[V_Z]);
- break;
- }
-
- draw(vec[V_X], vec[V_Y], vec[V_Z]);
- break;
- case VPOLY:
- if (vdevice.save) {
- vdevice.save = 0;
- pmv(vec[V_X], vec[V_Y], vec[V_Z]);
- break;
- }
-
- pdr(vec[V_X], vec[V_Y], vec[V_Z]);
- break;
- default:
- move(vec[V_X], vec[V_Y], vec[V_Z]);
- }
- }
-
- /*
- * v4f
- * Adds a 4D point to our fake point buffer
- */
- void
- v4f(vec)
- double vec[4];
- {
- vcall(vec, 4);
- }
-
- /*
- * v3f
- * Adds a 3D point to our fake point buffer
- */
- void
- v3f(vec)
- double vec[3];
- {
- vcall(vec, 3);
- }
-
- /*
- * v2f
- * Adds a 2D point to our fake point buffer
- */
- void
- v2f(vec)
- double vec[2];
- {
- vcall(vec, 2);
- }
-
-
- /*
- * v4d
- * Adds a 4D point to our fake point buffer
- */
- void
- v4d(vec)
- double vec[4];
- {
- double v[4];
-
- v[0] = vec[0];
- v[1] = vec[1];
- v[2] = vec[2];
- v[3] = vec[3];
-
- vcall(v, 4);
- }
-
- /*
- * v3d
- * Adds a 3D point to our fake point buffer
- */
- void
- v3d(vec)
- double vec[3];
- {
- double v[3];
-
- v[0] = vec[0];
- v[1] = vec[1];
- v[2] = vec[2];
-
- vcall(v, 3);
- }
-
- /*
- * v2d
- * Adds a 2D point to our fake point buffer
- */
- void
- v2d(vec)
- long vec[2];
- {
- double v[2];
-
- v[0] = vec[0];
- v[1] = vec[1];
-
- vcall(v, 2);
- }
-
-
-
- /*
- * v4i
- * Adds a 4D point to our fake point buffer
- */
- void
- v4i(vec)
- long vec[4];
- {
- double v[4];
-
- v[0] = vec[0];
- v[1] = vec[1];
- v[2] = vec[2];
- v[3] = vec[3];
-
- vcall(v, 4);
- }
-
- /*
- * v3i
- * Adds a 3D point to our fake point buffer
- */
- void
- v3i(vec)
- long vec[3];
- {
- double v[3];
-
- v[0] = vec[0];
- v[1] = vec[1];
- v[2] = vec[2];
-
- vcall(v, 3);
- }
-
- /*
- * v2i
- * Adds a 2D point to our fake point buffer
- */
- void
- v2i(vec)
- long vec[2];
- {
- double v[2];
-
- v[0] = vec[0];
- v[1] = vec[1];
-
- vcall(v, 2);
- }
- /*
- * v4s
- * Adds a 4D point to our fake point buffer
- */
- void
- v4s(vec)
- short vec[4];
- {
- double v[4];
-
- v[0] = vec[0];
- v[1] = vec[1];
- v[2] = vec[2];
- v[3] = vec[3];
-
- vcall(v, 4);
- }
-
- /*
- * v3s
- * Adds a 3D point to our fake point buffer
- */
- void
- v3s(vec)
- short vec[3];
- {
- double v[3];
-
- v[0] = vec[0];
- v[1] = vec[1];
- v[2] = vec[2];
-
- vcall(v, 3);
- }
-
- /*
- * v2s
- * Adds a 2D point to our fake point buffer
- */
- void
- v2s(vec)
- short vec[2];
- {
- double v[2];
-
- v[0] = vec[0];
- v[1] = vec[1];
-
- vcall(v, 2);
- }
-